#ifndef __FUNC_INTERFACE_H__
#define __FUNC_INTERFACE_H__

#include <boost/shared_ptr.hpp>
#include <boost/property_tree/ptree.hpp>

#include <HAL/hal.h>

namespace ECG
{
namespace HAL
{

class FuncInterface
{
  public:
    FuncInterface(){}
    virtual ~FuncInterface() {}
    virtual int open(const char *path) = 0;
    virtual void close(int fd) = 0;
    virtual bool configure(int fd, const boost::property_tree::ptree &hwConf) = 0;
    virtual int read(int fd, char *buf, std::size_t size) = 0;
    virtual int write(int fd, const char *buf, std::size_t size) = 0;
    };

}
}

#endif //__FUNC_INTERFACE_H__